#!/usr/bin/env python
# codeing:utf-8
"""
    注意头部的写法，去环境设置里面寻找python目录
    python2.7 infra相关的py  需要提交到linux上后在使用
    使用拼接shell命令
    jiazurongyu
"""
import os
import sys
import time

#建议每次都包含
def decide_script():
    "返回当前脚本名称路径 和参数"
    print "script name is %s" %(sys.argv[0])
    print(sys.argv)#返回是1个list
decide_script()

def decide_os():
    "判断是否是linux环境 为linux2，如果是win32的则退出"
    if (sys.platform =="linux2"):
        print "这个是linux2环境"
        pass
    else:
        print "当前是win32环境"
        #sys.exit(1)   #<debug>sys.exit(staus)
decide_os()

def decide_root():
    "判断是否是root账号，如果不是自己切换"
    if os.getuid() ==0:#判断是否是root,0等于root
        pass
    else:
        print "当前用户不是root用户，请用root用户"
        sys.exit(1)#退出
decide_root()

def role_install():
    """判断你想安装的python版本
        wget设置：最大链接2次，最后1次超时后停止
    """
    version =raw_input("请输入你要安装的python版本号(2.7/3.5):")  #linux环境自带了py2.7.
    if version =='2.7':
        url ='https://www.python.org/ftp/python/2.7.12/Python-27.12.tgz'
    elif version =="3.5":
        url ="https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz"
    else:
        print("你输入的版本在范围以外")
        sys.exit(1)

    #wget设置 shell可替换
    shell_cmd ='wget -t 2 -T 2'+url
    res =os.system(shell_cmd)  #os.system实现shell
    if res !=0:
        print "下载python源码包失败"
        sys.exit(1)

    if version =='2.7':
        #解压在本地 && 串行在进入文件夹
        package_name ='Python-2.71.12'
        #shell_cmd ='tar xf python-2.7.12.tgz && cd Python-2.7.12'
    #支持这里扩展
    else:
        package_name ='Python-3.5.2'
    shell_cmd ='tar xf'+package_name+'.tgz' #先判断cd摆下面段
    #shell_cmd ='tar xf python-3.5.3.tgz && cd Python-3.5.2'
    res=os.system(shell_cmd)
    if res!=0:
        os.remove('rm'+package_name+'.tgz') #防止错误产生，先删除
        print "tar解码失败应该是完整,需要重新下载"
        sys.exit(1)

    #配置安装目录 make -j4 4代表4核 一般可以调度到核数*2 但不适合太多
    shell_cmd ='cd'+package_name+'./Configure --prefix =/usr/local/python && make -j4 && make install'
    res =os.system(shell_cmd)
    if res!=0:
        print "安装python源码失败，青检查是否缺少依赖库"
        sys.exit(1)
    #返回0 代表安装完了
    else:
        print "进行安装"
    time.sleep(60)

    # shell_cmd ='which python'
    # res =os.system(shell_cmd)
    py_path = '/usr/bin/python'
    # if res==(py_path):
    #     print("is ok")
    #     pass

    shell_cmd ='rm -rf'+py_path
    res =os.system(shell_cmd)
    time.sleep(10)
    shell_cmd ='ln -s'+py_path+'/python3 '+py_path
    res =os.system(shell_cmd)
    if res !=0:
        print "软连接建立失败，建议检查配置"
        sys.exit(1)

role_install()
